89f3b2b1db0f45eb24fdcc28195d9d96eec2c73d,transports/quartz/src/main/java/org/mule/transport/quartz/QuartzMessageDispatcher.java,QuartzMessageDispatcher,doDispatch,#MuleEvent#,54
Before Change
throw new IllegalArgumentException(CoreMessages.objectIsNull(QuartzConnector.PROPERTY_JOB_CONFIG).getMessage());
}
JobDetail jobDetail = new JobDetail();
// make the job name unique per endpoint (MULE-753)
jobDetail.setName(endpoint.getEndpointURI().getAddress() + "-" + event.getId());
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put(QuartzConnector.PROPERTY_JOB_DYNAMIC, Boolean.TRUE);
MuleMessage msg = event.getMessage();
// populate from invocation and outbound scopes only
for (String key : msg.getInvocationPropertyNames())
{
jobDataMap.put(key, msg.getInvocationProperty(key));
}
for (String key : msg.getOutboundPropertyNames())
{
jobDataMap.put(key, msg.getOutboundProperty(key));
}
if (jobConfig instanceof ScheduledDispatchJobConfig)
{
ScheduledDispatchJobConfig scheduledDispatchJobConfig = (ScheduledDispatchJobConfig) jobConfig;
String endpointRef = event.getMuleContext()
.getExpressionManager()
.parse(scheduledDispatchJobConfig.getEndpointRef(), event);
jobDataMap.put("endpointRef", endpointRef);
}
jobDetail.setJobDataMap(jobDataMap);
Job job = null;
// work out what we're actually calling
Object payload = event.getMessage().getPayload();
if(jobConfig instanceof CustomJobConfig)
{
job = ((CustomJobConfig) jobConfig).getJob();
}
else if(jobConfig instanceof CustomJobFromMessageConfig)
{
job = ((CustomJobFromMessageConfig) jobConfig).getJob(msg);
//rewrite the jobConfig to the real Jobconfig on the message
jobConfig = ((CustomJobFromMessageConfig) jobConfig).getJobConfig(msg);
}
jobDataMap.put(QuartzConnector.PROPERTY_JOB_CONFIG, jobConfig);
jobDetail.setJobClass(jobConfig.getJobClass());
// If there has been a job created or found then we default to a customJob configuration
if (job != null)
{
jobDataMap.put(QuartzConnector.PROPERTY_JOB_OBJECT, job);
jobDetail.setJobClass(CustomJob.class);
}
// The payload will be ignored by the CustomJob - don't know why we need it here
//RM: The custom job may want the message and the Job type may not be delegating job
jobDataMap.put(QuartzConnector.PROPERTY_PAYLOAD, payload);
Trigger trigger;
String cronExpression = jobDataMap.getString(QuartzConnector.PROPERTY_CRON_EXPRESSION);
String repeatInterval = jobDataMap.getString(QuartzConnector.PROPERTY_REPEAT_INTERVAL);
String repeatCount = jobDataMap.getString(QuartzConnector.PROPERTY_REPEAT_COUNT);
String startDelay = jobDataMap.getString(QuartzConnector.PROPERTY_START_DELAY);
String groupName = jobConfig.getGroupName();
String jobGroupName = jobConfig.getJobGroupName();
if (groupName == null)
{
groupName = QuartzConnector.DEFAULT_GROUP_NAME;
}
if (jobGroupName == null)
{
jobGroupName = groupName;
}
jobDetail.setGroup(groupName);
if (cronExpression != null)
{
CronTrigger ctrigger = new CronTrigger();
ctrigger.setCronExpression(cronExpression);
trigger = ctrigger;
}
else if (repeatInterval != null)
{
SimpleTrigger strigger = new SimpleTrigger();
strigger.setRepeatInterval(Long.parseLong(repeatInterval));
if (repeatCount != null)
{
strigger.setRepeatCount(Integer.parseInt(repeatCount));
}
else
{
strigger.setRepeatCount(-1);
}
trigger = strigger;
}
else
{
throw new IllegalArgumentException(
QuartzMessages.cronExpressionOrIntervalMustBeSet().getMessage());
}
trigger.setName(endpoint.getEndpointURI().toString() + "-" + event.getId());
trigger.setGroup(groupName);
trigger.setJobName(jobDetail.getName());
trigger.setJobGroup(jobGroupName);
After Change
.build();
TriggerBuilder triggerBuilder = newTrigger()
.withIdentity(endpoint.getEndpointURI().toString() + "-" + event.getId(), groupName)
.forJob(jobDetail.getKey().getName(), jobGroupName);
if (cronExpression != null)
{